#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int n,cnt=1,ch[N][2],d[N],siz[N],sum[N];
long long ans;
string s;
void insert(){
	int u=1;
	for(int i=0,l=s.length();i<l;i++){
		int v=s[i]-'0';
		if(!ch[u][v]) ch[u][v]=++cnt;
		d[ch[u][v]]=d[u]+1;
		u=ch[u][v];
	}
	++sum[u];
}
struct node{
	int op,dep;
	bool operator<(const node &x)const{
		return dep<x.dep;
	}
};
multiset<node> st[N];
void dfs(int x){
	if(!ch[x][0]&&!ch[x][1]){
		siz[x]=1,st[x].insert({1,d[x]+2});
		--sum[x];
	}
	else if(bool(ch[x][0])+bool(ch[x][1])==1){
		int v=ch[x][0]?ch[x][0]:ch[x][1];
		dfs(v);
		st[x].swap(st[v]);
		siz[x]=siz[v]+1;
		st[x].insert({0,d[x]+1});
	}
	else{
		int l=ch[x][0],r=ch[x][1];
		dfs(l),dfs(r);
		if(siz[l]>siz[r]){
			st[x].swap(st[l]);
			for(auto v:st[r]) st[x].insert(v);
		}
		else{
			st[x].swap(st[r]);
			for(auto v:st[l]) st[x].insert(v);
		}
		siz[x]=siz[l]+siz[r];
	}
	for(int t=1;t<=sum[x];t++){
		auto it=st[x].begin();
		node tmp=*it;st[x].erase(it);
		int op=tmp.op,dep=tmp.dep;
		ans+=dep-d[x];
		if(!op) st[x].insert({1,dep+2});
		else st[x].insert({1,dep+1}),st[x].insert({1,dep+1});
	}
}
signed main() {
	freopen("id.in","r",stdin);
	freopen("id.out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++) cin>>s,insert();
	dfs(1);
	cout<<ans;
	return 0;
}
